/**
 * @author Hemant
 * Storage.java
 * This class returns storage path for a report.
 */

/*
*Released on 28th June 2008.
*Any violations can be reported at paritosh@wikiocean.net
*What is treated as violations can be found at www.wikiocean.net/ppl1-voilations*
******************************************************************************
* The contents of this file are subject to POOL Public License 1.0 and later.
* POOL Public License is based on Affero GPL v3 and additional conditions.
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the Affero GPL v3 License at http://www.gnu.org/licenses/agpl.html
* You may obtain a copy of the POOL Public License 1.0 or later at www.wikiocean.net/license/ppl.html
* Software distributed under POOL Public License 1.0 is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Initial Developer of the Original Code is Paritosh Pungaliya (C) 2008. All Rights Reserved.
******************************************************************************
* Objective of the additional terms (license)
* 1) Is to extend the software freedom to freedom to work.
* 2) To ensure that knowledge is free from monopoly of agencies.
* 3) To avoid a situation where big corporate or investor can buy out free software groups and companies and then start milking the communities built around it.
* (this trend can be seen how the freedom is curtailed in companies that get Venture Capital funding.)
******************************************************************************
*/

package  guireportgenerator;

import java.io.*;

import utility.*;
import file.*;
import dbmanager.DBManager;
import dbmanager.GetIdName;

public class Storage implements WebReportInterface
{
	String mid;
	String param;
	RandomAccessFile raf;
	GetIdName get;
	/**
	 * Overridden method of WebReportInterface interface.
	 * @param id Master id of storage object.
	 */
	public void setData(String id) 
	{
		this.mid = id;		
	}
	/**
	 * Overridden method of WebReportInterface interface.
	 * @param get GetIdName object.
	 */
	public void setGetIdName(GetIdName get) 
	{
		this.get = get;
	}
	
	/**
	 * Sets parameter for storage path.
	 * @param param
	 */
	public void setparam(String param)
	{
		this.param = param;
	}
	
	/**
	 * Overridden method of WebReportInterface interface.
	 * @return Report path.
	 */
	public String getData() 
	{		
		String path = "";
		File file = new File(Input.MASTERREPORTSPATH+mid+"/"+mid+"_mid"+Input.FILRFORMAT); 
		
		try 
		{
			raf = new RandomAccessFile(file,"r");
		} 
		catch (FileNotFoundException e) 
		{
			e.printStackTrace();
		}
		
		FileUtility fu = new FileUtility(raf);
        
        //int midIndex = fu.getColumnIndex("mid")-1;
        int pidIndex = fu.getColumnIndex("pid")-1;
        int pvIndex = fu.getColumnIndex("pv")-1;
        int vtIndex = fu.getColumnIndex("vt")-1;
        //int refIndex = fu.getColumnIndex("ref")-1;
		String line = null;
		
		try 
		{
			line = raf.readLine();
			while((line = raf.readLine())!= null)
			{
				String [] temparr = line.split(Input.SEPARATOR);	
				String pid = temparr[pidIndex];
				String pv = temparr[pvIndex];
				String vt = temparr[vtIndex];
				
				if(get.getItem(pid).equalsIgnoreCase("path"))
				{
					if(Integer.parseInt(pv) != 0)
					{
						path = Input.ROOT+pv+param+Input.FILRFORMAT;
					}
					else
					{
						path = Input.ROOT+vt+param+Input.FILRFORMAT;
					}
				}								
			}
		}
		catch (NumberFormatException e) 
		{
			e.printStackTrace();
		} 
		catch (IOException e) 
		{
			e.printStackTrace();
		}
		System.out.println("Th report path is "+path);
		return path;			
	}

	
}
